
package gameoflife;

/**
 * Welcome to the SimulationParams class.
 *
 * This class is designed to hold all the simulation parameters for one
 * distinct simulation parameter set.
 * This object can be used multible times for different simulations.
 * @author CJ
 */
public class SimulationParams {

    //Instance Variables
    private int generationSize;
    private int simulationLength;
    private UpdateRules updateRules;

    //Constructors
    /**
     * Basic constructor that stores all the params for later.
     *
     * Assumes that all inputs are valid and none null.
     *
     * @param generationSize, size of generatoin
     * @param simulationLength, number of simulations
     * @param updateRules, update rules for simulations
     */
    public SimulationParams(int generationSize, int simulationLength, UpdateRules updateRules){
        this.generationSize = generationSize;
        this.simulationLength = simulationLength;
        this.updateRules = updateRules;
    }

    //Public Methods
    /**
     * Basic getter for generation size.
     * @return, the generation size
     */
    public int getGenerationSize(){
        return this.generationSize;
    }

    /**
     * Basic getter for simulation length;
     * @return, number of simulation
     */
    public int getSimulationLength(){
        return this.simulationLength;
    }

    /**
     * Basic getter for update rules.
     * @return, the updaterules
     */
    public UpdateRules getUpdateRules(){
        return this.updateRules;
    }

}
